The present invention relates generally to digital systems, and more particularly to error detection and isolation.
The need for error detection arises from that well-known and oft-stated adage: If anything can be wrong, it will. Today's computing equipment continuously transfers data between a central processing unit (CPU) and associated peripherals, storage, terminals, and other like elements. Errors can be introduced during the reading, writing, or actual transmission of the data. Accordingly, error control has become a necessary part of the design of modern digital systems.
A variety of error-detection methods are in use today. Typically, these methods involve the addition of one or more bits, called "redundancy bits," to the information-carrying bits of a character or stream of characters. These redundancy bits do not carry any information; rather they are used to determine the corectness of the bits carrying the information.
Perhaps the most commonly used method of error detection is the simple parity check. A parity check consists of adding up the bitts in a unit of data, calculating the parity bit required, and checking the calculated parity bit with that transferred with the data item.
Carrying the redundancy bit (e.g., the parity bit) with the information is important for data integrity. However, if the data is corrupted at one point, it is obviously not desirable to pass that corrupted data to another point because its effect becomes more negative.
In many digital systems, data can cross a number of "boundaries" of such subsystems as circuit boards or chips. Good design will or should invoke checking the data integrity when such a boundary is crossed as an input; and crossing a boundary as an output usually results in the parity being regenerated. The problem with this, however, is that in the event data is corrupted between the two boundaries the regenerated parity will be good for that data, but the data will be bad.
Thus, it is better to carry parity with the data wherever it goes. However, the problem here is when the parity error is ultimately detected, there is no way of isolating where that error occurred (i.e., prior to or at the input boundary, between the two boundaries, or at or after the output boundary).